#pragma once
#include "main.h"
#include <stdint.h>

/**
 *  hal io接口
 *  @note 本接口为简化IO引脚的命名，方便使用。使管脚的表示和ESP32平台兼容。
 *  @note STM32中使用一对GPIO_TypeDef*和uint16_t来表示一个引脚，此处压缩为一个字节
 */

// 管脚转为U8型数字的定义规则
#define PIN(x, pin) ((x << 4) | pin)
#define PA(pin) PIN(0xA, pin)
#define PB(pin) PIN(0xB, pin)
#define PC(pin) PIN(0xC, pin)
#define PD(pin) PIN(0xD, pin)
#define PE(pin) PIN(0xE, pin)
#define PF(pin) PIN(0xF, pin)

/// @brief 提供管脚的硬件写接口
/// @param pin 指定要操作的管脚
/// @param value 指定新电平值
void halIoWrite(uint8_t pin, uint8_t value);

/// @brief 提供管脚的硬件读接口
/// @param pin 指定要操作的管脚
/// @return 返回管脚的电平值
uint8_t halIoRead(uint8_t pin);
